// axios基础的封装
import axios from 'axios'
import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/userStore'
// import { useRouter } from 'vue-router'
import router from '@/router';
const httpInstance = axios.create({
  baseURL: '',
  timeout: 5000
})

// 拦截器

// axios请求拦截器
httpInstance.interceptors.request.use(config => {
  // 1. 从pinia获取token数据
  const userStore = useUserStore()
  // 2. 按照后端的要求拼接token数据
  const token = userStore.userInfo ? userStore.userInfo.token : ''
  if (token) {
    // config.headers.token = `Bearer ${token}`
    config.headers.token = token
  }
  return config
}, e => Promise.reject(e))

// axios响应式拦截器
httpInstance.interceptors.response.use(
  response => {
    // 成功响应
    handleResponse(response);
    return response.data;
  },
  error => {
    // 错误响应
    handleResponse(error.response);
    return Promise.reject(error);
  }
);

function handleResponse(response) {
  if (!response) {
    // 如果响应对象为空，可能是网络问题
    ElMessage({
      type: 'error',
      message: '请求失败，请检查网络连接'
    });
    return;
  }

  // 提取错误信息
  // let errorMessage = '';
  // if (response.status >= 400) {
  //   errorMessage = response.data.message || '服务器返回错误';
  // }

  // 统一错误提示
  // if (errorMessage) {
  //   ElMessage({
  //     type: 'warning',
  //     message: errorMessage
  //   });
  // }

  console.log(response.data);
  
  // 检查特定错误码
  if (response.data.msg === "用户未登录，请重新登录" || response.data.msg === "登录已过期，请重新登录" ) {
    const userStore = useUserStore()
    // const router = useRouter()
    // 清除用户信息
    userStore.clearUserInfo();

    // 跳转到登录页
    router.push('/login');
  }

  // 返回响应数据或错误
  return response;
}


export default httpInstance